package com.glb.app.assistant;

/**
 * 该接口定义了一个内存聊天助手，使用特定的AI服务进行聊天。
 * 它通过Langchain4j框架，并明确指定了所使用的AI模型和记忆模型。
 */
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;
import dev.langchain4j.service.spring.AiServiceWiringMode;

/**
 * MemoryChatAssistant接口标记了一个内存聊天助手服务。
 * 该接口的实现将能够处理用户消息，并基于记忆模型提供聊天响应。
 *
 * 注解解释：
 * @AiService(wiringMode = AiServiceWiringMode.EXPLICIT
 *         , chatModel = "qwenChatModel",
 *         chatMemory = "qwenChatMemory")
 * 表示该服务明确地使用名为"qwenChatModel"的聊天模型和"qwenChatMemory"的记忆模型。
 * 这种明确的布线模式（wiring mode）使得资源管理更为清晰和可控。
 */
@AiService(wiringMode = AiServiceWiringMode.EXPLICIT
        , chatModel = "qwenChatModel",
        chatMemory = "qwenChatMemory")
public interface MemoryChatAssistant {

    /**
     * 与聊天助手进行交互的方法。
     *
     * @param userMessage 用户输入的消息，这是聊天助手做出响应的依据。
     * @return 聊天助手的响应消息，基于用户消息和记忆模型生成。
     */
//    @UserMessage("你是我的好朋友，请用上海话回答问题，并且添加一些表情符号。{{it}}")
//    String chat(String userMessage);


    @UserMessage("你是我的好朋友，请用上海话回答问题，并且添加一些表情符号。{{m}}")
    String chat(@V("m") String userMessage);
}
